// Type: Agatha.Common.InversionOfControl.IContainer
// Assembly: Agatha.Common, Version=1.3.0.0, Culture=neutral, PublicKeyToken=6f21cf452a4ffa13
// Assembly location: E:\Gis\SourceFrameWork\SourceFrameWork\nuget\Agatha-Common-Castle-Windsor\lib\net40\Agatha.Common.dll

using System;

namespace Agatha.Common.InversionOfControl
{
    public interface IContainer
    {
        void Register(Type componentType, Type implementationType, Lifestyle lifeStyle);
        void Register<TComponent, TImplementation>(Lifestyle lifestyle) where TImplementation : TComponent;
        void RegisterInstance(Type componentType, object instance);
        void RegisterInstance<TComponent>(TComponent instance);
        TComponent Resolve<TComponent>();
        TComponent Resolve<TComponent>(string key);
        object Resolve(Type componentType);
        void Release(object component);
    }
}
